/**
 * 获取或更新 Token 微信小程序专用 建议在小程序运行的开始调用一次
 * 依次尝试从全局变量缓存、本地存储中获取 Token
 * 如果没有找到则通过微信小程序的接口获取 Code 从服务器获取新的 Token
 * @returns {Promise<string>} - 返回获取到的 Token
 */
let globalToken = null;

import { config } from "../config"
function getToken() {
  return new Promise((resolve, reject) => {
    // 尝试从全局变量缓存中获取 Token
    if (globalToken) {
      return resolve(globalToken);
    }

    // 尝试从本地存储中获取 Token
    const localToken = uni.getStorageSync('token');
    if (localToken) {
      globalToken = localToken; // 同步到全局变量
      return resolve(localToken);
    }
    if (config.mode == "weixin") {
      // 尝试通过调用微信小程序接口获取 Code 并请求服务器获取新的 Token
      uni.login({
        success(loginRes) {
          uni.request({
            url: config.server + "getToken", // 替换为你的服务器 URL
            method: 'POST',
            data: {
              code: loginRes.code,
            },
            success(res) {
              if (res.statusCode === 200) {
                uni.setStorageSync('token', res.data.token); // 保存新 Token 到本地存储
                globalToken = res.data.token; // 更新全局 Token
                resolve(res.data.token);
              } else {
                reject(new Error('获取 Token 失败，状态码: ' + res.statusCode));
              }
            },
            fail(err) {
              reject(err);
            },
          });
        },
        fail(err) {
          reject(err);
        },
      });
    } else {
      // 这是以后需要做的功能
      console.log(config)
    }


  });
}
function requestToken(account, password) {
  uni.request({
    url: config.server + "/requestToken"
  })
}


export {
  getToken,
  requestToken
}